package com.saco.jsf;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.context.RequestContext;

import com.finanzas.constante.Constantes;
import com.finanzas.dao.CatalogoDao;
import com.finanzas.dao.PagoConceptoDao;
import com.finanzas.dto.in.ConsultaCatalogoIn;
import com.finanzas.entity.Elemento;
import com.finanzas.entity.PagoConcepto;

@ManagedBean
@ViewScoped
public class RegistroPagoConceptoBean {

	@EJB
	private PagoConceptoDao conceptoDao;
	@EJB
	private CatalogoDao catDao;
	/* Variables */
	private PagoConcepto concepto;
	private Map<String, Long> listaPeriodicidad;
	private Map<String, Long> listaEstatus;
	private ConsultaCatalogoIn catIn;

	public RegistroPagoConceptoBean() {
		init();
	}

	public ConsultaCatalogoIn getCatIn() {
		return catIn;
	}

	public void setCatIn(ConsultaCatalogoIn catIn) {
		this.catIn = catIn;
	}

	public Map<String, Long> getlistaPeriodicidad() {
		return listaPeriodicidad;
	}

	public Map<String, Long> getListaPeriodicidad() {
		return listaPeriodicidad;
	}

	public void setListaPeriodicidad(Map<String, Long> listaPeriodicidad) {
		this.listaPeriodicidad = listaPeriodicidad;
	}

	public Map<String, Long> getListaEstatus() {
		return listaEstatus;
	}

	public void setListaEstatus(Map<String, Long> listaEstatus) {
		this.listaEstatus = listaEstatus;
	}

	public void setlistaPeriodicidad(Map<String, Long> listaPeriodicidad) {
		this.listaPeriodicidad = listaPeriodicidad;
	}

	public PagoConcepto getConcepto() {
		return concepto;
	}

	public void setConcepto(PagoConcepto concepto) {
		this.concepto = concepto;
	}

	public void registrarConcepto() {
		conceptoDao.guardar(concepto);
		limpiarDatos();
		mostrarMensaje();
	}

	public void limpiarDatos() {
		PagoConcepto c = new PagoConcepto();
		Elemento estatus = new Elemento();
		c.setEstatus(estatus);
		Elemento periodo = new Elemento();
		c.setPeriodo(periodo);
		c.setDescripcion("");
		c.setMonto(0.0);
		c.setFechAlta(new Date());
		setConcepto(c);
	}

	@PostConstruct
	public void iniciarCatalogosPagina() {
		catIn.setIdCatalogo(Constantes.PERIODO);
		List<Elemento> listCatalogo = catDao.consultarCatalogo(catIn);
		if (listCatalogo != null) {
			for (Elemento e : listCatalogo) {
				listaPeriodicidad.put(e.getDescripcion(), e.getIdElemento());
			}
		}

		catIn.setIdCatalogo(Constantes.ESTATUS);
		List<Elemento> listEstatus = catDao.consultarCatalogo(catIn);
		if (listEstatus != null) {
			for (Elemento e : listEstatus) {
				listaEstatus.put(e.getDescripcion(), e.getIdElemento());
			}
		}
	}

	public void init() {
		concepto = new PagoConcepto();
		Elemento estatus = new Elemento();
		concepto.setEstatus(estatus);
		Elemento periodo = new Elemento();
		concepto.setPeriodo(periodo);
		concepto.setFechAlta(new Date());
		catIn = new ConsultaCatalogoIn();
		listaPeriodicidad = new HashMap<String, Long>();
		listaEstatus = new HashMap<String, Long>();
	}
	
	public void mostrarMensaje(){
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Estado del Registro", "El registro se realizo correctamente");      
        RequestContext.getCurrentInstance().showMessageInDialog(message);
	}
	
}
